package org.nf.web.servlet;

import cn.hutool.core.util.ReflectUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

/**
 * 负责调用Controller方法处理请求
 *
 * @author zhu
 * @date 2024-05-15
 */
public interface HandlerInvoke {

    /**
     *当前适配器是否支持调用这个Controller，如果支持则返回true
     *
     * @param obj 传入的类型
     * @return 如果支持则返回true
     */
    boolean supports(Object obj);

    /**
     * 请求调用
     *
     * @param controllerClass 处理请求的对象(有可能是一个Class，也有可能是一个Method)
     * @param servletApi 请求对象和响应对象
     * @return 视图
     */
    Object invoke(Object controllerClass, ServletApi servletApi) throws Exception;
}
